using RotovapPlatform.Domain.Equipment.PackML;

namespace RotovapPlatform.Domain.Equipment.Interfaces.CPG;

public interface IUnitMachine
{
	Task<bool> InitializeAsync();
	Task<bool> StartAsync();
	Task<bool> StopAsync();
	Task<bool> AbortAsync();
	Task<bool> ClearAsync();
	Task<bool> ResetAsync();
	Task<bool> SuspendAsync();
	Task<bool> UnsuspendAsync();
	Task<bool> HoldAsync();
	Task<bool> UnHoldAsync();
	PackMLState CurrentState { get; }
	PackMLMode CurrentMode { get; }

	event EventHandler<PackMLState> StateChanged;
	event EventHandler<PackMLMode> ModeChanged;
}